package com.hy.mydesktop.client.component.factory;

import java.util.ArrayList;
import java.util.List;

import com.extjs.gxt.ui.client.data.BaseTreeModel;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.menu.Menu;
import com.extjs.gxt.ui.client.widget.menu.MenuBar;
import com.extjs.gxt.ui.client.widget.menu.MenuBarItem;
import com.extjs.gxt.ui.client.widget.menu.MenuItem;
import com.hy.mydesktop.client.component.meta.AbstractComponetModelEnum;
import com.hy.mydesktop.client.component.meta.MenuBarModelEnum;
import com.hy.mydesktop.shared.persistence.domain.gxt.GxtComponentMetaNodeModel;

/**
 * 
 * <ul>
 * <li>开发作者：汤莉</li>
 * <li>设计日期：2010-8-30；时间：上午11:18:59</li>
 * <li>类型名称：MenuBarFactory</li>
 * <li>设计目的：</li>
 * </ul>
 * <ul>
 * <b>修订编号：</b>
 * <li>修订日期：</li>
 * <li>修订作者：</li>
 * <li>修订原因：</li>
 * <li>修订内容：</li>
 * </ul>
 */
public class MenuBarFactory {

	/**
	 * 
	 * <ul>
	 * <li>方法含义：创建菜单栏</li>
	 * <li>方法作者：汤莉</li>
	 * <li>编写日期：2010-8-30；时间：下午上午11:19:39</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @param gxtComponentMetaModel
	 * @return
	 */
	public static MenuBar createMenuBar(GxtComponentMetaNodeModel gxtComponentMetaModel){
		return configureMenuBar(gxtComponentMetaModel);
	}
	
	/**
	 * 
	 * <ul>
	 * <li>方法含义：配置菜单栏属性</li>
	 * <li>方法作者：汤莉</li>
	 * <li>编写日期：2010-8-30；时间：下午上午11:20:22</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @param gxtComponentMetaNodeModel
	 * @return
	 */
	private static MenuBar configureMenuBar(GxtComponentMetaNodeModel gxtComponentMetaNodeModel){
		
		MenuBar bar=createDefaultMenuBar();
		bar = AbstractComponetFactory.configureAbstractComponet(bar, gxtComponentMetaNodeModel);

		if(gxtComponentMetaNodeModel.get(AbstractComponetModelEnum.CHILDREN.name().toLowerCase())!=null){
			//添加子控件
		 List<GxtComponentMetaNodeModel> list =(List<GxtComponentMetaNodeModel>)gxtComponentMetaNodeModel.get(AbstractComponetModelEnum.CHILDREN.name().toLowerCase());
		 for(int i=0;i<list.size();i++)
			{
				MenuBarItem item=MenuItemBarFactory.createMenuBarItem(list.get(i));

				bar.add(item);
			}			
		}
		

		if(gxtComponentMetaNodeModel.get(MenuBarModelEnum.MENUBARITEM.name().toLowerCase())!=null){
			
//			String[][] sub = gxtComponentMetaModel.get(MenuBarModelEnum.MENUBARITEM.name().toLowerCase());
//			
//			for(int i=0;i<sub.length;i++){
//				gxtComponentMetaModel.set("text", sub[i][0]);
//				List<String> list=new ArrayList<String>();
//					for(int j=1;j<sub[i].length;j++){
//						list.add(sub[i][j]);
//					}
//					gxtComponentMetaModel.set("menuitem1", list);
//					//gxtComponentMetaModel.set("menu", "list");//只要不是空值就行
//					MenuBarItem item=MenuItemBarFactory.createMenuBarItem(gxtComponentMetaModel);
//					bar.add(item);
//			}
			List<BaseTreeModel> list=gxtComponentMetaNodeModel.get(MenuBarModelEnum.MENUBARITEM.name().toLowerCase());
			for (BaseTreeModel i:list)
			{
				gxtComponentMetaNodeModel.set("text", i.get("name"));
				gxtComponentMetaNodeModel.set("menuitem1", i.getChildren());
				gxtComponentMetaNodeModel.set("menu", "list");//只要不是空值就行
				MenuBarItem item=MenuItemBarFactory.createMenuBarItem(gxtComponentMetaNodeModel);
				bar.add(item);
			}
		}
		
		return bar;
	}
	
	/**
	 * 
	 * <ul>
	 * <li>方法含义：创建默认的菜单栏</li>
	 * <li>方法作者：汤莉</li>
	 * <li>编写日期：2010-8-31；时间：下午下午02:09:41</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @return
	 */
	private static MenuBar createDefaultMenuBar()
	{
		MenuBar bar=new MenuBar();
		return bar;
	}
}
